package com.huangpf.util.httpclient;

import org.apache.http.HttpHost;
import org.apache.http.HttpVersion;
import org.apache.http.client.fluent.Form;
import org.apache.http.client.fluent.Request;
import org.apache.http.entity.ContentType;

import java.io.File;
import java.io.IOException;

/**
 * Created by Administrator on 2016/8/16.
 */
public class HttpClientFluen {


    public static void main(String[] args){
        //执行一个GET请求,同时设置Timeout参数并将响应内容作为String返回
        try {
            Request.Get("http://blog.csdn.net/vector_yi")
                    .connectTimeout(1000)
                    .socketTimeout(1000)
                    .execute().returnContent().asString();
        } catch (IOException e) {
            e.printStackTrace();
        }

        //以Http/1.1版本协议执行一个POST请求，同时配置Expect-continue handshake达到性能调优,
        //请求中包含String类型的请求体并将响应内容作为byte[]返回
        try {
            Request.Post("http://blog.csdn.net/vector_yi")
                    .useExpectContinue()
                    .version(HttpVersion.HTTP_1_1)
                    .bodyString("Important stuff", ContentType.DEFAULT_TEXT)
                    .execute().returnContent().asBytes();
        } catch (IOException e) {
            e.printStackTrace();
        }


        //通过代理执行一个POST请求并添加一个自定义的头部属性,请求包含一个HTML表单类型的请求体
        //将返回的响应内容存入文件
        try {
            Request.Post("http://blog.csdn.net/vector_yi")
                    .addHeader("X-Custom-header", "stuff")
                    .viaProxy(new HttpHost("myproxy", 8080))
                    .bodyForm(Form.form().add("username", "vip").add("password", "secret").build())
                    .execute().saveContent(new File("result.dump"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
